package com.xzy.tool.mail;

import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;


/**   
* 简单邮件（不带附件的邮件）发送器   
*/    
public class MailSenderTool  {    
/**   
  * 以文本格式发送邮件   
  * @param mailInfo 待发送的邮件的信息   
  */    
    public static boolean sendTextMail(MailSenderInfo mailInfo) {    
      // 判断是否需要身份认证    
      MailAuthenticator authenticator = null;    
      Properties pro = mailInfo.getProperties();   
      if (mailInfo.isValidate()) {    
      // 如果需要身份认证，则创建一个密码验证器    
        authenticator = new MailAuthenticator(mailInfo.getUserName(), mailInfo.getPassword());    
      }   
      // 根据邮件会话属性和密码验证器构造一个发送邮件的session    
      Session sendMailSession = Session.getDefaultInstance(pro,authenticator);    
      try {    
      // 根据session创建一个邮件消息    
      Message mailMessage = new MimeMessage(sendMailSession);    
      // 创建邮件发送者地址    
      Address from = new InternetAddress(mailInfo.getFromAddress());    
      // 设置邮件消息的发送者    
      mailMessage.setFrom(from);    
      // 创建邮件的接收者地址，并设置到邮件消息中    
      String[] mails=mailInfo.getToAddress();
      Address[] tos=new InternetAddress[mails.length];
      for(int i=0;i<mails.length;i++){
    	  Address to = new InternetAddress(mails[i]);
    	  tos[i]=to;
      }
      mailMessage.setRecipients(Message.RecipientType.TO,tos);    
      // 设置邮件消息的主题    
      mailMessage.setSubject(mailInfo.getSubject());    
      // 设置邮件消息发送的时间    
      mailMessage.setSentDate(new Date());    
      // 设置邮件消息的主要内容    
      String mailContent = mailInfo.getContent();    
      mailMessage.setText(mailContent);    
      // 发送邮件    
      Transport.send(mailMessage);   
      return true;    
      } catch (MessagingException ex) {    
          ex.printStackTrace();    
      }    
      return false;    
    }    
       
    /**
     * 发送邮件
     * @param title 标题
     * @param content 内容
     * @param toMail 对方邮件地址，多个用","分割 aa@mail.com,bb@mail.com
     */
    public static void send(String title,String content,String toMail){
    	String[] mails=toMail.split(",");
	     MailSenderInfo mailInfo = new MailSenderInfo();    
	     mailInfo.setMailServerHost("smtp.demo.com");    
	     mailInfo.setMailServerPort("25");    
	     mailInfo.setValidate(true);    
	     mailInfo.setUserName("demo@demo.com");    
	     mailInfo.setPassword("123456");
	     mailInfo.setFromAddress("demo@demo.com");    
	     mailInfo.setToAddress(mails);    
	     mailInfo.setSubject(title);    
	     mailInfo.setContent(content);    
	     sendTextMail(mailInfo);    
    }
}   

